Douglas McIlroy
   HOME

TheInfoList



OR:

Malcolm Douglas McIlroy (born 1932) is an American
mathematician A mathematician is someone who uses an extensive knowledge of mathematics in their work, typically to solve mathematical problems. Mathematicians are concerned with numbers, data, quantity, mathematical structure, structure, space, Mathematica ...
,
engineer Engineers, as practitioners of engineering, are professionals who Invention, invent, design, build, maintain and test machines, complex systems, structures, gadgets and materials. They aim to fulfill functional objectives and requirements while ...
, and
programmer A programmer, computer programmer or coder is an author of computer source code someone with skill in computer programming. The professional titles Software development, ''software developer'' and Software engineering, ''software engineer' ...
. As of 2019 he is an
Adjunct Professor An adjunct professor is a type of academic appointment in higher education who does not work at the establishment full-time. The terms of this appointment and the job security of the tenure vary in different parts of the world, but the term is gen ...
of
Computer Science Computer science is the study of computation, information, and automation. Computer science spans Theoretical computer science, theoretical disciplines (such as algorithms, theory of computation, and information theory) to Applied science, ...
at
Dartmouth College Dartmouth College ( ) is a Private university, private Ivy League research university in Hanover, New Hampshire, United States. Established in 1769 by Eleazar Wheelock, Dartmouth is one of the nine colonial colleges chartered before the America ...
. McIlroy is best known for having originally proposed Unix pipelines and developed several
Unix Unix (, ; trademarked as UNIX) is a family of multitasking, multi-user computer operating systems that derive from the original AT&T Unix, whose development started in 1969 at the Bell Labs research center by Ken Thompson, Dennis Ritchie, a ...
tools, such as echo, spell,
diff In computing, the utility diff is a data comparison tool that computes and displays the differences between the contents of files. Unlike edit distance notions used for other purposes, diff is line-oriented rather than character-oriented, but i ...
, sort, join, graph, speak, and tr. He was also one of the pioneering researchers of macro processors and programming language extensibility. He participated in the design of multiple influential programming languages, particularly
PL/I PL/I (Programming Language One, pronounced and sometimes written PL/1) is a procedural, imperative computer programming language initially developed by IBM. It is designed for scientific, engineering, business and system programming. It has b ...
,
SNOBOL SNOBOL ("StriNg Oriented and symBOlic Language") is a series of programming languages developed between 1962 and 1967 at AT&T Bell Laboratories by David J. Farber, Ralph Griswold and Ivan P. Polonsky, culminating in SNOBOL4. It was one of a ...
, ALTRAN, TMG and C++. His seminal work on software componentization and
code reuse Code reuse is the practice of using existing source code to develop software instead of writing new code. ''Software reuse'' is a broader term that implies using any existing software asset to develop software instead of developing it again. An as ...
makes him a pioneer of
component-based software engineering Component-based software engineering (CBSE), also called component-based development (CBD), is a style of software engineering that aims to construct a software system from software component, components that are loosely-Coupling (computer program ...
and software product line engineering.


Biography

McIlroy earned his
bachelor's degree A bachelor's degree (from Medieval Latin ''baccalaureus'') or baccalaureate (from Modern Latin ''baccalaureatus'') is an undergraduate degree awarded by colleges and universities upon completion of a course of study lasting three to six years ...
in engineering physics from
Cornell University Cornell University is a Private university, private Ivy League research university based in Ithaca, New York, United States. The university was co-founded by American philanthropist Ezra Cornell and historian and educator Andrew Dickson W ...
, and a Ph.D. in applied mathematics from
MIT The Massachusetts Institute of Technology (MIT) is a private research university in Cambridge, Massachusetts, United States. Established in 1861, MIT has played a significant role in the development of many areas of modern technology and sc ...
in 1959 for his thesis ''On the Solution of the Differential Equations of Conical Shells'' (advisor Eric Reissner). He taught at MIT from 1954 to 1958. McIlroy joined Bell Laboratories in 1958; from 1965 to 1986 was head of its Computing Techniques Research Department (the birthplace of the Unix operating system), and thereafter was Distinguished Member of Technical Staff. From 1967 to 1968, McIlroy also served as a visiting lecturer at
Oxford University The University of Oxford is a collegiate research university in Oxford, England. There is evidence of teaching as early as 1096, making it the oldest university in the English-speaking world and the second-oldest continuously operating u ...
. In 1997, McIlroy retired from Bell Labs, and took a position as an adjunct professor in the
Dartmouth College Dartmouth College ( ) is a Private university, private Ivy League research university in Hanover, New Hampshire, United States. Established in 1769 by Eleazar Wheelock, Dartmouth is one of the nine colonial colleges chartered before the America ...
Computer Science Department. He has previously served the
Association for Computing Machinery The Association for Computing Machinery (ACM) is a US-based international learned society for computing. It was founded in 1947 and is the world's largest scientific and educational computing society. The ACM is a non-profit professional membe ...
as national lecturer,
Turing Award The ACM A. M. Turing Award is an annual prize given by the Association for Computing Machinery (ACM) for contributions of lasting and major technical importance to computer science. It is generally recognized as the highest distinction in the fi ...
chairman, member of the publications planning committee, and associate editor for the ''
Communications of the ACM ''Communications of the ACM'' (''CACM'') is the monthly journal of the Association for Computing Machinery (ACM). History It was established in 1958, with Saul Rosen as its first managing editor. It is sent to all ACM members. Articles are i ...
'', the ''
Journal of the ACM The ''Journal of the ACM'' (''JACM'') is a peer-reviewed scientific journal covering computer science in general, especially theoretical aspects. It is an official journal of the Association for Computing Machinery. Its current editor-in-chief is ...
'', and '' ACM Transactions on Programming Languages and Systems''. He also served on the executive committee of CSNET.


Research and contributions


Macro processors

McIlroy is considered to be a pioneer of macro processors. In 1959, together with Douglas E. Eastwood of Bell Labs, he introduced conditional and recursive macros into popular SAP assembler, creating what is known as Macro SAP. His 1960 paper was also seminal in the area of extending any (including high-level) programming languages through macro processors. These contributions started the macro-language tradition at Bell Labs ("everything from L6 and AMBIT to C"). McIlroy's macro processing ideas were also the main inspiration for
TRAC Trac is an open-source, web-based project management and bug tracking system. It has been adopted by a variety of organizations for use as a bug tracking system for both free and open-source software and proprietary projects and products. Tr ...
macro processor. He also coauthored M6 macro processor in FORTRAN IV, which was used in ALTRAN and later was ported to and included into early versions of Unix.


Contributions to Unix

Throughout the 1960s and 1970s McIlroy contributed programs for
Multics Multics ("MULTiplexed Information and Computing Service") is an influential early time-sharing operating system based on the concept of a single-level memory.Dennis M. Ritchie, "The Evolution of the Unix Time-sharing System", Communications of t ...
(such as RUNOFF A
PDF
/ref>) and
Unix Unix (, ; trademarked as UNIX) is a family of multitasking, multi-user computer operating systems that derive from the original AT&T Unix, whose development started in 1969 at the Bell Labs research center by Ken Thompson, Dennis Ritchie, a ...
operating systems (such as ''
diff In computing, the utility diff is a data comparison tool that computes and displays the differences between the contents of files. Unlike edit distance notions used for other purposes, diff is line-oriented rather than character-oriented, but i ...
'', ''echo'', ''tr'', ''join'' and ''look''), versions of which are widespread to this day through adoption of the
POSIX The Portable Operating System Interface (POSIX; ) is a family of standards specified by the IEEE Computer Society for maintaining compatibility between operating systems. POSIX defines application programming interfaces (APIs), along with comm ...
standard and
Unix-like A Unix-like (sometimes referred to as UN*X, *nix or *NIX) operating system is one that behaves in a manner similar to a Unix system, although not necessarily conforming to or being certified to any version of the Single UNIX Specification. A Uni ...
operating systems. He introduced the idea of Unix pipelines. He also implemented TMG compiler-compiler in
PDP-7 The PDP-7 is an 18-bit computing, 18-bit minicomputer produced by Digital Equipment Corporation as part of the Programmed Data Processor, PDP series. Introduced in 1964, shipped since 1965, it was the first to use their Flip-Chip module, Flip- ...
and PDP-11 assembly, which became the first high-level programming language running on Unix, prompting development and influencing
Ken Thompson Kenneth Lane Thompson (born February 4, 1943) is an American pioneer of computer science. Thompson worked at Bell Labs for most of his career where he designed and implemented the original Unix operating system. He also invented the B (programmi ...
's B programming language and Stephen Johnson's
Yacc Yacc (Yet Another Compiler-Compiler) is a computer program for the Unix operating system developed by Stephen C. Johnson. It is a lookahead left-to-right rightmost derivation (LALR) parser generator, generating a LALR parser (the part of a co ...
parser-generator. McIlroy also took over from
Dennis Ritchie Dennis MacAlistair Ritchie (September 9, 1941 – October 12, 2011) was an American computer scientist. He created the C programming language and the Unix operating system and B language with long-time colleague Ken Thompson. Ritchie and Thomp ...
compilation of the Unix manual "as a labor of love". Particularly, he edited volume 1 of the manual pages for Version 7 Unix. According to Sandy Fraser: "The fact that there was a manual, that he cIlroyinsisted on a high standard for the manual, meant that he insisted on a high standard for every one of the programs that was documented".


Computer language design

McIlroy influenced the design and implementation of
SNOBOL SNOBOL ("StriNg Oriented and symBOlic Language") is a series of programming languages developed between 1962 and 1967 at AT&T Bell Laboratories by David J. Farber, Ralph Griswold and Ivan P. Polonsky, culminating in SNOBOL4. It was one of a ...
programming language. His string manipulation macros were used extensively in the initial SNOBOL implementation of 1962, and figured prominently in subsequent work, eventually leading to its machine-independent implementation language SIL. The table type (
associative array In computer science, an associative array, key-value store, map, symbol table, or dictionary is an abstract data type that stores a collection of (key, value) pairs, such that each possible key appears at most once in the collection. In math ...
) was added to SNOBOL4 on McIlroy's insistence in 1969. In 1960s, he participated in the design of
PL/I PL/I (Programming Language One, pronounced and sometimes written PL/1) is a procedural, imperative computer programming language initially developed by IBM. It is designed for scientific, engineering, business and system programming. It has b ...
programming language. He was a member of the
IBM International Business Machines Corporation (using the trademark IBM), nicknamed Big Blue, is an American Multinational corporation, multinational technology company headquartered in Armonk, New York, and present in over 175 countries. It is ...
SHARE committee that designed the language and, together with Robert Morris, wrote the Early PL/I (EPL) compiler in TMG for the
Multics Multics ("MULTiplexed Information and Computing Service") is an influential early time-sharing operating system based on the concept of a single-level memory.Dennis M. Ritchie, "The Evolution of the Unix Time-sharing System", Communications of t ...
project. Around 1965, McIlroy, together with W. Stanley Brown, implemented the original version of ALTRAN programming language for IBM 7094 computers.Hall, A.D., "The ALTRAN System for Rational Function Manipulation — A Survey". ''
Communications of the ACM ''Communications of the ACM'' (''CACM'') is the monthly journal of the Association for Computing Machinery (ACM). History It was established in 1958, with Saul Rosen as its first managing editor. It is sent to all ACM members. Articles are i ...
'', 14(8):517–521 (August 1971).
McIlroy has also made a significant influence on design of the programming language C++ (e.g., he proposed the stream output operator <<).


Algorithms

In the 1990s, McIlroy worked on improving sorting techniques, particularly he co-authored an optimized qsort with Jon Bentley. In 1969, he contributed an efficient algorithm to generate all
spanning tree In the mathematical field of graph theory, a spanning tree ''T'' of an undirected graph ''G'' is a subgraph that is a tree which includes all of the vertices of ''G''. In general, a graph may have several spanning trees, but a graph that is no ...
s in a graph (first discovered by George J. Minty in 1965).


Awards and recognition

In 1995, he was elected as a Fellow of the
American Association for the Advancement of Science The American Association for the Advancement of Science (AAAS) is a United States–based international nonprofit with the stated mission of promoting cooperation among scientists, defending scientific freedom, encouraging scientific responsib ...
. In 2004, he won both the USENIX Lifetime Achievement Award ("The Flame") and its Software Tools User Group (STUG) award. In 2006, he was elected as a member of the
National Academy of Engineering The National Academy of Engineering (NAE) is an American Nonprofit organization, nonprofit, NGO, non-governmental organization. It is part of the National Academies of Sciences, Engineering, and Medicine (NASEM), along with the National Academ ...
.


Views on computing

McIlroy is attributed the quote "The real hero of programming is the one who writes negative code,"These quotes were heard during a talk he gave to the DLSLUG 12/3/09 where the meaning of ''negative code'' is taken to be similar to the famous
Apple An apple is a round, edible fruit produced by an apple tree (''Malus'' spp.). Fruit trees of the orchard or domestic apple (''Malus domestica''), the most widely grown in the genus, are agriculture, cultivated worldwide. The tree originated ...
developer, Bill Atkinson, team anecdote (i.e., when a change in a program source makes the number of lines of code decrease ('negative' code), while its overall quality, readability or speed improves).


See also

* Darwin (programming game) *
Homoiconicity In computer programming, homoiconicity (from the Greek words ''homo-'' meaning "the same" and ''icon'' meaning "representation") is an informal property of some programming languages. A language is homoiconic if a program written in it can be mani ...
*
Unix philosophy The Unix philosophy, originated by Ken Thompson, is a set of cultural norms and philosophical approaches to Minimalism (computing), minimalist, Modularity (programming), modular software development. It is based on the experience of leading devel ...


Literature

* *


References


External links

;Bell Labs
archived homepage
at Bell Labs

(audio), includes many autobiographical notes, along with discussion of many of the major Unix authors ;cs.dartmouth.edu
Doug McIlroy's homepage

Biography



Doug McIlroy Facts
;Ancestry of Linux

, presentation November 2005
(presentation)(audio)(video)
;code.google.com
Original unix spell source code, written by Doug McIlroy
{{DEFAULTSORT:McIlroy, Douglas Dartmouth College faculty Cornell University College of Engineering alumni Massachusetts Institute of Technology School of Science alumni Living people Members of the United States National Academy of Engineering Scientists at Bell Labs Multics people Unix people Plan 9 people 1932 births